<?php

namespace Cekurte\Shortener;

use Cekurte\Shortener\Url\Google,
	Cekurte\Shortener\Url\BitLy;

/**
 * Classe responsável por encurtar/desencurtar uma URL
 * 
 * @author 	João Paulo Cercal
 * @version 1.0
 */
class Url
{
	/**
	 * shorteneres disponíveis..
	 */
	
	const SHORTENER_URL_GOOGLE 	= 'goo.gl';
	const SHORTENER_URL_BITLY 	= 'bit.ly';
	
	/**
	 * Armazena a instância do encurtador, o encurtador é selecionado no método construtor
	 */
	private $shortener = null;
	
	/**
	 * Método construtor
	 * 
	 * @param 	string $shortener utilize uma das constantes da classe que referenciam os encurtadores, 
	 * o encurtador default é o Goo.gl (Google)
	 * 
	 * @author 	João Paulo Cercal
	 * @version 1.0
	 */
	public function __construct( $shortener = self::SHORTENER_URL_GOOGLE )
	{
		switch( $shortener )
		{
			case self::SHORTENER_URL_BITLY:
				$this->shortener = new BitLy();
				break;
				
			case self::SHORTENER_URL_GOOGLE:
			default:
				$this->shortener = new Google();
				break;
		}
	}
	
	/**
     * Encurta uma URL longa
     * 
     * @param 	string $longUrl Uma url longa por exemplo: http://www.dominio.com/link.php?url=etc
     * 
     * @author 	João Paulo Cercal
	 * @version 1.0
	 * 
	 * @return 	string uma url encurtada, por exemplo: http://goo.gl/p9vgX
     */
	public function encurtar( $longUrl )
	{
		return $this->shortener->encurtar( $longUrl );
	}
	
	/**
     * Desencurta uma url encurtada
     * 
     * @param 	string $shortUrl uma url curta, por exemplo: http://goo.gl/p9vgX
     * @param 	bool $analytics Se true mostra o mapa da URL, do contrário não mostra. O padrão é false (não mostrar)
     * 
     * @author 	João Paulo Cercal
	 * @version 1.0
	 * 
     * @return 	string a url original
     */
	public function desencurtar( $shortUrl )
	{
		return $this->shortener->desencurtar( $shortUrl );
	}
}
